<?php

class alunoCreate extends TPage{
    private $form;
    private $grid;
    private $loaded;
    
    function __construct() {
        parent::__construct();
        $this->form = new TForm();
        $this->form->add($table = new TTable);
        
        //Campos do formulário
        $id = new TEntry('id');
        $id->setEditable(FALSE);
        $id->setSize(30);
        $row = $table->addRow();
        $row->addCell(new TLabel('id'));
        $row->addCell($id);
        
        $nome = new TEntry('nome');
        $nome->setSize(120);
        $row = $table->addRow();
        $row->addCell(new TLabel('Nome'));
        $row->addCell($nome);
        
        $matricula = new TEntry('matricula');
        $matricula->setSize(120);
        $row = $table->addRow();
        $row->addCell(new TLabel('Matricula'));
        $row->addCell($matricula);
        
        $btSalvar = new TButton('salvar');
        $btSalvar->setAction(new TAction(array($this,'onSave')), 'Salvar');
        $row = $table->addRow();
        $row->addCell($btSalvar);
        
        $this->grid = new TDataGrid();
        $columnId = new TDataGridColumn('id', 'Identificador', 'center', 20);
        $columnNome = new TDataGridColumn('nome', 'Nome', 'center', 200);
        $columnMatricula = new TDataGridColumn('matricula', 'Matricula', 'center', 60);
        
        $this->grid->addColumn($columnId);
        $this->grid->addColumn($columnNome);
        $this->grid->addColumn($columnMatricula);
        
        $delete = new TDataGridAction((array($this,'onDelete')));
        $delete->setImage('ico_delete.png');
        $delete->setField('id');
        $delete->setLabel('Delete');
        
        $action1 = new TDataGridAction(array($this, 'onEdit'));
        $action1->setLabel('Editar');
        $action1->setImage('ico_edit.png');
        $action1->setField('id');
        
        $this->grid->addAction($delete);
        $this->grid->addAction($action1);
        
        $this->grid->createModel();
        
        $this->form->setFields(array($id,$nome,$matricula,$btSalvar));
        
        $body = new TTable();
        $body->addRow()->addCell($this->form);
        $body->addRow()->addCell($this->grid);
        
        parent::add($body);
    }
    
    /*
     * m�todo onReload()
     * carrega a DataGrid com os objetos do banco de dados
     */
    function onReload()
    {
        // inicia transa��o com o banco 'my_livro'
        TTransaction::open('my_livro');

        // instancia um reposit�rio para Cidade
        $repository = new TRepository('alunoRecord');

        // cria um crit�rio de sele��o, ordenado pelo id
        $criteria = new TCriteria;
        $criteria->setProperty('order', 'id');

        // carrega os objetos de acordo com o criterio
        $alunos = $repository->load($criteria);
        $this->grid->clear();
        if ($alunos)
        {
            // percorre os objetos retornados
            foreach ($alunos as $aluno)
            {
                // adiciona o objeto na DataGrid
                $this->grid->addItem($aluno);
            }
        }
        // finaliza a transa��o
        TTransaction::close();
        $this->loaded = true;
    }
    
    /*
     * m�todo onSave()
     * executada quando o usu�rio clicar no bot�o salvar do formul�rio
     */
    function onSave()
    {
        // inicia transa��o com o banco 'my_livro'
        TTransaction::open('my_livro');
        // obt�m os dados no formul�rio em um objeto Cidade
        $aluno = $this->form->getData('alunoRecord');
        // armazena o objeto
        $aluno->store();
        // finaliza a transa��o
        TTransaction::close();
        // exibe mensagem de sucesso
        new TMessage('info', 'Dados armazenados com sucesso');
        // recarrega listagem
        $this->onReload();
    }


    /*
     * m�todo onDelete()
     * executada quando o usu�rio clicar no bot�o excluir da datagrid
     * pergunta ao usu�rio se deseja realmente excluir um registro
     */
    function onDelete($param)
    {
        // obt�m o par�metro $key
        $key=$param['key'];
        // define duas a��es
        $action1 = new TAction(array($this, 'Delete'));
        $action2 = new TAction(array($this, 'none'));
        // define os par�metros de cada a��o
        $action1->setParameter('key', $key);
        $action2->setParameter('key', $key);

      // exibe um di�logo ao usu�rio
      new TQuestion('Deseja realmente excluir o aluno?', $action1, $action2);
    }

    /*
     * m�todo Delete()
     * exclui um registro
     */
    function Delete($param)
    {
        // obt�m o par�metro $key
        $key=$param['key'];
        // inicia transa��o com o banco 'my_livro'
        TTransaction::open('my_livro');
        // instancia objeto Cidade
        $aluno = new alunoRecord($key);
        // deleta objeto do banco de dados
        $aluno->delete();
        // finaliza a transa��o
        TTransaction::close();
        // recarrega a datagrid
        $this->onReload();
        // exibe mensagem de sucesso
        new TMessage('info', "Aluno excluido com sucesso");
    }

    /*
     * m�todo onEdit()
     * executada quando o usu�rio clicar no bot�o editar da datagrid
     */
    function onEdit($param)
    {
        // obt�m o par�metro $key
        $key=$param['key'];
        // inicia transa��o com o banco 'my_livro'
        TTransaction::open('my_livro');
        // instancia objeto Cidade
        $aluno = new alunoRecord($key);
        // lan�a os dados da cidade no formul�rio
        $this->form->setData($aluno);
        // finaliza a transa��o
        TTransaction::close();
        $this->onReload();
    }

      
    function show()
    {
        if (!$this->loaded)
        {
            $this->onReload();
        }
        parent::show();
    }
    
}

?>
